package paquetes.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import paquetes.manager.AdministradorCliente;
import paquetes.negocioVO.ClienteEventualVO;
import paquetes.negocioVO.ClienteRegularVO;
import paquetes.negocioVO.*;


public class ControladorCliente extends HttpServlet {

	private static final long serialVersionUID = 1087702007634924546L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            String action = request.getParameter("action");
            String jspPage = "/index.jsp";

            if(request.getParameter("cancelar4")!=null)
            {
            	action ="default";
            }
  
            
            if ((action == null) || (action.length() < 1))
            {
                action = "default";
            }

            if ("default".equals(action))
            {
                jspPage = "/index.jsp";
            }else if("alta".equals(action)){
            	
            jspPage = "jsp/Cliente/Alta.jsp";
            	
            }
            else if ("altaCliente".equals(action))
            {
            	DomicilioVO domicilio = new DomicilioVO();
            	String tipo = request.getParameter("tipo");
        		String nombre = request.getParameter("nombre");
        		String documento = request.getParameter("documento");
        		String telefonocontacto = request.getParameter("telefonocontacto");
        		String direccion = request.getParameter("direccion");
        		String localidad = request.getParameter("localidad");
        		float latitud = Float.valueOf(request.getParameter("latitud"));
        		float longitud = Float.valueOf(request.getParameter("longitud"));
        		int distanciaKmDeSucursal = Integer.valueOf(request.getParameter("distanciaKmDeSucursal"));
        		String minutosEstimadosDeSucursal = request.getParameter("minutosEstimadosDeSucursal");
        		domicilio.setDireccion(direccion);
        		domicilio.setLocalidad(localidad);
        		domicilio.setLatitud(latitud);
        		domicilio.setLongitud(longitud);
        		domicilio.setDistanciaKmDeSucursal(distanciaKmDeSucursal);
        		
        		/*if(tipo.equalsIgnoreCase("ClienteEventual")){
        			
        			ClienteEventualVO c = new ClienteEventualVO();
        			c.setDocumento(documento);
        			c.setNombre(nombre);
        			c.setTelefonoContacto(telefonocontacto);
        			c.setDomicilio(domicilio);
        			c.setTipo(tipo);
            		AdministradorCliente.getInstancia().alta(tipo,documento,nombre,telefonocontacto,domicilio);
            		//request.setAttribute("bandera", bandera);
                    //jspPage = "jsp/Generales/Resultado.jsp"; 
        		}else{
        			ClienteRegularVO c = new ClienteRegularVO();
        			c.setDocumento(documento);
        			c.setNombre(nombre);
        			c.setTelefonoContacto();
        			c.setDomicilio(domicilio);
        			c.setTipo(tipo);
                 */
        		 AdministradorCliente.getInstancia().alta(tipo,documento,nombre,telefonocontacto,domicilio);
            		
            		//request.setAttribute("bandera", bandera);
                    //jspPage = "jsp/Generales/Resultado.jsp"; 
        	/*	}
        	  */  
				
            }
            
            else if ("displaylist".equals(action))
            {
            	List<ClienteVO> clientes = new ArrayList<ClienteVO>();
            	clientes = AdministradorCliente.getInstancia().getClientes();
				request.setAttribute("clientes", clientes);
                jspPage = "jsp/Cliente/MostrarLista.jsp";
     
            }
            
            else if ("display".equals(action))
            {
            	String documento = request.getParameter("documento");
                ClienteVO c = AdministradorCliente.getInstancia().buscarCliente(documento); 
				request.setAttribute("cliente", c);
                jspPage = "jsp/Cliente/Mostrar.jsp";
            }
            
            else if ("edicion".equals(action))
            {
                jspPage = "jsp/Cliente/IngresarDocumento.jsp";
            }
            else if ("edit".equals(action))
            {
            	int id = Integer.valueOf(request.getParameter("id"));
            	String tipo = request.getParameter("tipo");
            	String nombre = request.getParameter("nombre");
        		String documento = request.getParameter("documento");
        		String telefonocontacto = request.getParameter("telefonocontacto");
        		String direccion = request.getParameter("direccion");
        		String localidad = request.getParameter("localidad");
        		float latitud = Float.valueOf(request.getParameter("latitud"));
        		float longitud = Float.valueOf(request.getParameter("longitud"));
        		int distanciaKmDeSucursal = Integer.valueOf(request.getParameter("distanciaKmDeSucursal"));
        		String minutosEstimadosDeSucursal = request.getParameter("minutosEstimadosDeSucursal");
        		DomicilioVO domicilio = new DomicilioVO();
        		domicilio.setDireccion(direccion);
        		domicilio.setLocalidad(localidad);
        		domicilio.setLatitud(latitud);
        		domicilio.setLongitud(longitud);
        		domicilio.setDistanciaKmDeSucursal(distanciaKmDeSucursal);
        		
        		 AdministradorCliente.getInstancia().actualizar(id,tipo,documento,nombre,telefonocontacto,domicilio);
             	                       
            }
            
            else if ("baja".equals(action))
            {
            	Integer id = Integer.valueOf(request.getParameter("id"));
            	AdministradorCliente.getInstancia().baja(id);
            	
            }
            /*
            else if ("save".equals(action))
            {
            	String tipo = request.getParameter("tipo");
            	String nombre = request.getParameter("nombre");
        		String documento = request.getParameter("documento");
        		String telefonocontacto = request.getParameter("telefonocontacto");
        		String direccion = request.getParameter("direccion");
        		String localidad = request.getParameter("localidad");
        		float latitud = Float.valueOf(request.getParameter("latitud"));
        		float longitud = Float.valueOf(request.getParameter("longitud"));
        		int distanciaKmDeSucursal = Integer.valueOf(request.getParameter("distanciaKmDeSucursal"));
        		String minutosEstimadosDeSucursal = request.getParameter("minutosEstimadosDeSucursal");
        		DomicilioVO domicilio = new DomicilioVO();
        		domicilio.setDireccion(direccion);
        		domicilio.setLocalidad(localidad);
        		domicilio.setLatitud(latitud);
        		domicilio.setLongitud(longitud);
        		domicilio.setDistanciaKmDeSucursal(distanciaKmDeSucursal);
        		if (tipo=="E"){
            		
            		ClienteEventualVO c = new ClienteEventualVO();
                	c.setNombre(nombre);
                	c.setDocumento(documento);
                	c.setTelefonoContacto(telefonocontacto);
                	c.setDomicilio(domicilio);
                	request.setAttribute("cliente", c);
                	AdministradorCliente.getInstancia().actualizar(c);
                	
            		}else{
            			
            			ClienteRegularVO c = new ClienteRegularVO();
                    	c.setNombre(nombre);
                    	c.setDocumento(documento);
                    	c.setTelefonoContacto(telefonocontacto);
                    	c.setDomicilio(domicilio);	
                    	request.setAttribute("cliente", c);
                    	AdministradorCliente.getInstancia().actualizar(c);
            		}
	            
            }
            */
            dispatch(jspPage, request, response);
        }
    
        protected void dispatch(String jsp, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            if (jsp != null)
            {
                RequestDispatcher rd = request.getRequestDispatcher(jsp);
                rd.forward(request, response);
            }
        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
        	System.out.println(request.toString());
            doPost(request, response);
        }
}
